/*
 * AtividadeComplementarDAOJPA.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cgd;

import java.util.List;
import javax.persistence.Query;
import srac.controleatividades.cdp.*;
import util.utilitarioPersistencia.DAOJPA;

public class AtividadeComplementarDAOJPA extends DAOJPA<AtividadeComplementar> implements AtividadeComplementarDAO {

    @Override
    public List<AtividadeComplementar> obterAtividadesComplementares(Etapa e) {
        Query query = entityManager.createQuery("Select eE from AtividadeComplementar eE where eE.etapa.id = ?1");
        query.setParameter(1, e.getId());
        return query.getResultList();
    }
    
    @Override
    public List<AtividadeComplementar> obterAtividadesComplementares(Aluno a, Etapa e) {
        Query query = entityManager.createQuery("Select a from AtividadeComplementar a where a.etapa.id = ?1 and a.aluno.id = ?2");
        query.setParameter(1, e.getId());
        query.setParameter(2, a.getId());
        return query.getResultList();
    }

    @Override
    public List<AtividadeComplementar> obterAtividadesComplementares(TipoAtividade t) {
        Query query = entityManager.createQuery("Select tE from AtividadeComplementar tE where tE.tipoAtividade.id = ?1");
        query.setParameter(1, t.getId());
        return query.getResultList();
    }

    @Override
    public List<AtividadeComplementar> obterAtividadesComplementares(Aluno a) {
        Query query = entityManager.createQuery("Select aE from AtividadeComplementar aE where aE.aluno.id = ?1");
        query.setParameter(1, a.getId());
        return query.getResultList();
    }
    
    @Override
    public List<AtividadeComplementar> obterAtividadesComplementares(Aluno a, StatusAtividadeComplementar s) {
        Query query = entityManager.createQuery("Select a from AtividadeComplementar a where a.aluno.id = ?1 and a.statusAtividadeComplementar = ?2");
        query.setParameter(1, a.getId());
        query.setParameter(2, s);
        return query.getResultList();
    }
    


    @Override
    public List<AtividadeComplementar> obterAtividadesComplementares(TipoAtividade t, StatusAtividadeComplementar s) {
        Query query = entityManager.createQuery("Select tE from AtividadeComplementar tE where tE.tipoAtividade.id = ?1 and tE.statusAtividadeComplementar = ?2");
        query.setParameter(1, t.getId());
        query.setParameter(2, s);
        return query.getResultList();
    }
    
    @Override
    public List<AtividadeComplementar> obterAtividadesComplementaresMenosAceitas() {
        Query query = entityManager.createQuery("Select tE from AtividadeComplementar tE where tE.aluno.statusSubmissao <> ?1");
        query.setParameter(1, StatusSubmissao.ATIVIDADES_ACEITAS);
        return query.getResultList();
    }
    
    @Override
    public List<AtividadeComplementar> obterAtividadesComplementaresValidacao(TipoAtividade t) {
        Query query = entityManager.createQuery("Select tE from AtividadeComplementar tE where tE.tipoAtividade.id = ?1 and (tE.statusAtividadeComplementar = ?2 or tE.statusAtividadeComplementar = ?3 or tE.statusAtividadeComplementar = ?4 or tE.statusAtividadeComplementar = ?5) and tE.aluno.statusSubmissao <> ?6 ");
        query.setParameter(1, t.getId());
        query.setParameter(2, StatusAtividadeComplementar.EM_ANALISE);
        query.setParameter(3, StatusAtividadeComplementar.ACEITA);
        query.setParameter(4, StatusAtividadeComplementar.REJEITADA);
        query.setParameter(5, StatusAtividadeComplementar.ACEITA_MODIFICADA);
        query.setParameter(6, StatusSubmissao.ATIVIDADES_ACEITAS);
        return query.getResultList();
    }
}